//-----------------------------------------------------------------------------
//
//      Класс-фабрика для определения механизма подготовки данных
//      (c) РГУПС, ВЖД 29/11/2017
//      Разработал: Ковшиков С. В.
//
//-----------------------------------------------------------------------------
/*!
 *  \file
 *  \brief Класс-фабрика для определения механизма подготовки данных
 *  \copyright РГУПС, ВЖД
 *  \author Ковшиков С. В
 *  \date 29/11/2017
 */

#include "abstract-engine-definer.h"

#include "client-delegates.h"
#include "abstract-data-engine.h"


//-----------------------------------------------------------------------------
// Конструктор
//-----------------------------------------------------------------------------
AbstractEngineDefiner::AbstractEngineDefiner()
{

}



//-----------------------------------------------------------------------------
// Деструктор
//-----------------------------------------------------------------------------
AbstractEngineDefiner::~AbstractEngineDefiner()
{

}



//-----------------------------------------------------------------------------
// Установить механизм подготовки данных для данного клиента
//-----------------------------------------------------------------------------
void AbstractEngineDefiner::setDataEngine(AbstractClientDelegate *client)
{
    client->setDataEngine(getDataEngine_(client->getName()));
}



//-----------------------------------------------------------------------------
// Конструктор
//-----------------------------------------------------------------------------
NullDataEngineDefiner::NullDataEngineDefiner()
{

}



//-----------------------------------------------------------------------------
// Вернуть нулевой механизм подготовки данных
//-----------------------------------------------------------------------------
AbstractDataEngine *NullDataEngineDefiner::getDataEngine_(QString clientName)
{
    Q_UNUSED(clientName);
    return new NullDataEngine();
    /*
        Метод всегда возвращает NullDataEngine(). Данный определитель
        механизмов подготовки данных установлен на сервере по-умолчанию для
        для избежания исключений связанных с Q_NULLPTR.
        Принцип null-object в духе М. Фаулера
     */
}
